# 元组  不可变的数据类型
# 不同数据类型之间不能相加
t1 = (21, 12, 123)
print(len(t1))
# type查看数据类型 单个元组后面必须加逗号
t2 = ("11111",)
print(type(t2))
print(t1[1])
t3 = t1 + t2
print(t3)

for i in range(1, 5):
    print(i, end="")
# 字符串
s = "hello,world"
s2 = "你好，python"
print(s * 3)
# 大小比较是比较编码大小
print(s > s2)
# in   not in
print("o" in s2)
print("o" not in s2)
# len
print(len(s))
print(s[0])  # 索引取值
# 切片
s1 = "abc123456"
print(s1[2:5])
print(s1[-7:-4])
# 查看编码 ord
print(ord("c"))

##### 集合  无序 唯一
from typing import Union

s3: set[Union[int, str]] = {1, 2, 3, 4}
s3.add(5)
s3.update({7})  # update需要添加一个集合
print(s1)
# 删除元素
s3.discard(1)
print(s1)
s3.remove(2)  # 删除元素
print(s1)
# 随机删除
s3.pop()
print(s1)
s3.clear()
# isdisjoint 有相同元素返回 false  没有相同元素返回 true
s6: set[str] = {"111", "222"}
s4 = {"111"}
print(s6.isdisjoint(s4))

# 不可变集合  不能添加 删除
s5 = frozenset({1, 2, 3, 4})
# list转成集合  set创建 一个去重过的集合
list = [1, 2, 3]
list1 = [1, 1, 1, 1, 3, 3, 3, 5]
print(set(list1))  # 可以去重
# in not in
# 交集 & intersection
print(s6.intersection(s4))
# 并集 | union
# 差集 - difference
# 比较
print(s2 == s3)

# 字典 {} 键值对 key:value
address = {"泰山": "山东"}
# 创建空字典
dict()
d1 = dict(zip(list, list1))
print(d1)
# 字典长度
print(len(d1))
person = {"name": "1234"}
person["age"] = 35
print(person)
# 获取单个值
person.get("name")
# 获取所有键
print(person.keys())
# 获取所有值
print(person.values())
# 获取键值对
print(person.items())
# 删除
print(person.pop("age"))
# setdefault 键存在则返回对应值，不在则向字典中添加新的键值
res = person.setdefault("address", {"2222": "3333"})
print(res)
# 添加 update
peo = {"name": "value"}
person.update(peo)
print(person)


# 可变数据类型 列表，集合，字典   不可变 字符串 数组 元组
